/**
 * 角色管理相关API
 */
import request from '@/utils/request';

/**
 * 创建角色
 * @param {Object} data - 角色数据
 */
export function createRole(data) {
    return request.post('/api/role/create', data);
}

/**
 * 更新角色
 * @param {Object} data - 角色数据
 */
export function updateRole(data) {
    return request.put(`/api/role/${data.id}`, data);
}

/**
 * 删除角色
 * @param {number} id - 角色ID
 */
export function deleteRole(id) {
    return request.delete(`/api/role/${id}`);
}

/**
 * 获取所有角色
 */
export function getAllRoles() {
    return request.get('/api/role/list');
}

/**
 * 获取用户角色
 * @param {number} userId - 用户ID
 */
export function getUserRoles(userId) {
    return request.get(`/api/role/user/${userId}`);
}

/**
 * 分配用户角色
 * @param {Object} data - 用户角色数据
 * @param {number} data.userId - 用户ID
 * @param {Array<number>} data.roleIds - 角色ID列表
 */
export function assignUserRoles(data) {
    return request.post('/api/role/user/assign', data);
}

/**
 * 撤销用户角色
 * @param {Object} data - 用户角色数据
 * @param {number} data.userId - 用户ID
 * @param {Array<number>} data.roleIds - 角色ID列表
 */
export function revokeUserRoles(data) {
    return request.post('/api/role/user/revoke', data);
}

/**
 * 获取所有权限
 */
export function getAllPermissions() {
    return request.get('/api/permission/list');
}

/**
 * 获取角色权限
 * @param {number} roleId - 角色ID
 */
export function getRolePermissions(roleId) {
    return request.get(`/api/role/${roleId}/permissions`);
}

/**
 * 分配角色权限
 * @param {Object} data - 角色权限数据
 * @param {number} data.roleId - 角色ID
 * @param {Array<number>} data.permissionIds - 权限ID列表
 */
export function assignRolePermissions(data) {
    return request.post('/api/role/permission/assign', data);
}

/**
 * 撤销角色权限
 * @param {Object} data - 角色权限数据
 * @param {number} data.roleId - 角色ID
 * @param {Array<number>} data.permissionIds - 权限ID列表
 */
export function revokeRolePermissions(data) {
    return request.post('/api/role/permission/revoke', data);
}

export default {
    createRole,
    updateRole,
    deleteRole,
    getAllRoles,
    getUserRoles,
    assignUserRoles,
    revokeUserRoles,
    getAllPermissions,
    getRolePermissions,
    assignRolePermissions,
    revokeRolePermissions
}; 